package com.example.csmall.product.mapper;

import com.example.csmall.product.pojo.entity.Album;
import com.example.csmall.product.pojo.entity.Category;
import com.example.csmall.product.pojo.vo.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CategoryMapper {

    /**
     * 添加一条记录
     *
     * @param category 记录的封装类
     * @return 受影响的行数
     */
    int insert(Category category);

    /**
     * 添加多条记录
     *
     * @param categoryList
     * @return
     */
    int insertBatch(List<Category> categoryList);

    /**
     * 根据id删除一条记录
     *
     * @param id 需要删除记录的id
     * @return 受影响的行数
     */
    int deleteById(Long id);

    /**
     * 批量根据id删除数据
     *
     * @param ids
     * @return
     */
    int deleteByIds(Long[] ids);

    /**
     * 根据id修改数据
     *
     * @param Category
     * @return
     */
    int updateById(Category Category);

    /**
     * 统计表中信息
     *
     * @return 受影响行数
     */
    int count();

    /**
     * 根据name统计数量
     *
     * @param name
     * @return
     */
    int countByName(String name);

    /**
     * 根据name和非此id统计数量
     *
     * @param id
     * @param name
     * @return 行数
     */
    int countByNameAndNotId(@Param("id") Long id, @Param("name") String name);

    /**
     * 根据父类别统计记录
     *
     * @param parentId
     * @return
     */
    int countByParentId(Long parentId);

    /**
     * 根据父类别id查询列表
     *
     * @param parentId
     */
    List<CategoryListByParentIdVO> listByParentId(Long parentId);

    /**
     * 根据ID查询数据
     *
     * @param id 要查询的id
     * @return 如果没有就返回null
     */
    CategoryStandardVO getStandardById(Long id);

    /**
     * 查询表中所有字段
     *
     * @return 返回存放所有记录的list集合
     */
    List<CategoryListItemVO> list();

}
